package com.caijb;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
 * 在 Java 中，Future 是一个重要的接口，用于表示一个异步计算的结果。它提供了一种机制，使得你能够在任务完成后获取结果，检查任务是否完成，或取消任务。
 * Future 通常与线程池或异步任务执行器一起使用。以下是关于 Future 的详细介绍，包括用法、常见方法及示例。
 * @author caijb
 * @version 1.0
 * @data 2025/8/30 10:05
 */
public class FutureDemo {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(2);
        Future<Integer> future = executor.submit(() -> {
            // 模拟长时间运行的任务
            Thread.sleep(2000);
            return 42; // 返回结果
        });
        while (true) {
            if (future.isDone()) {
                try {
                    Integer result = future.get();
                    System.out.println("Result: " + result);
                    break;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }else {
                System.out.println("Waiting for task to complete...");
            }
        }
    }
}
